package cn.findviewbydream.evil.main.service;

import cn.findviewbydream.evil.main.enums.LoginType;
import cn.findviewbydream.evil.main.enums.RegisterType;
import cn.findviewbydream.evil.main.exception.RegisterException;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpSession;

/********************************************
 * 工程名：HebeuCS
 * 包名：cn.findviewbydream.evil.main.service
 * 时间：16-11-1 下午5:29
 * 作者：白雨濃 evil
 * 邮箱：evilbai@foxmail.com
 * 内容：注册接口
 ********************************************/
public interface LoginService
{
    /**
     * 登录
     *
     * @param userName     账户
     * @param userPassword 密码
     * @return 登录返回类型
     */
    LoginType login(HttpSession session, String userName, String userPassword);

    /**
     * 退出登录
     *
     * @param session
     * @return
     */
    boolean exit(HttpSession session);

    /**
     * 获得加密的字符串存入Cookie
     * <strong>注意:返回的字符串前有 : 符号,以便于与状态分隔</strong>
     *
     * @param userName     账户
     * @param userPassword 密码
     * @param remember     是否记住密码
     * @return 加密后的字符串
     */
    String setCookie(String userName, String userPassword, boolean remember);

    /**
     * 通过Cookie进行登录
     *
     * @param cookies Cookie列表
     * @return 是否匹配
     */
    boolean getCookie(HttpSession session, Cookie[] cookies);

    /**
     * 用户注册
     *
     * @param userName     账户
     * @param userPassword 密码
     * @param userRealName 用户真实姓名
     * @return 注册返回类型
     */
    RegisterType register(String userName, String userPassword, String userRealName);

    /**
     * 查询用户是否在黑名单
     *
     * @param userName 用户名
     * @return true为在黑名单
     */
    boolean selectBlack(String userName);

    /**
     * 更新用户是否在黑名单
     *
     * @param userName 用户名
     * @param isBlack  true为更新到黑名单 false为从黑名单取消该用户
     * @return 是否成功
     */
    boolean updateBlack(String userName, boolean isBlack);
}
